Während der Training "lernt" Neurale Netzwerk die Gewichte ihrer Schichten. Es wird in Raum dieser Paramer nach so eine Kombination gesucht, die möglischt minimale Loss-funktion liefert. Allgemein kann man das Loss auf folgende Weise darstellen: $L(W) = \frac{1}{N}\Sigma_{i=1}^{n}L_i(f(x_i, W), y_i)+\lambda R(W)$ . Das beschreibt einen Landschaft in Raum der Parameter $W$. Da diese Räume in Anwendungsfällen Tausende und Millionen Dimensional sein können, wird das Minimimum nicht analytisch gesucht, sondern auf folgende Weise. Aus dem Ausgangspunkt(wie man es auswählt - später) beginnt Algorithmus anhand des Gradients, der relativ einfach sich durck Backpropagation berechnen lässt, das Weg in Richtung Maximale Neigung. Der Basis diese Idee entspricht der einfachste Algorithmus von Optimierung-Familie - Stohastic Gradient Descent (SGD).
In deisen Teil werden wir ein künstlich erstellten einfaches Beispiel betrachten. In Teil 2 werden wir uns neurale Netzwerk mit MNIST dataset zuwenden.
Lassen uns Loss Funktion von 2 Parameter $W_1$ and $W_2$ wie folgende Paraboloid vorstellen. In der Realität werden die Trainingdaten wahrscheinlich stohastische Erregungen enthalten. Um das zu simulieren wird Graideint zufällige Störung enthalten und Loss-Landschaft mit stohastischen Erregung definiert. Das Minima findet sich trotzdenm in $(0,0)$.
Algorithmus (noch nicht als schön Anwendbare Funktion) liegt in folgende Code-Zelle:
Auch in so einfachen Fall wegen stohastischen Störungen kann SGD das beste Minima nicht und "bewegt sich" etwa langsam (das wird später deutlicher gezeigt).
Lassen uns ein Landschaft vorstellen, das mehrere lokale Minima,Maxima und Sattelpunkte besitzt:
Wir wählen folgende Learning Rate Hyperparameter und Anfangspunkt.
Simplifiziert lässt sich sagen, dass wir ein kleines Schritt (abhängig von Learning Rate) in der richtung maximale Neigung (beeinflüßt von stohastischen Erregungen) machen. Das einfaschste Algorythmus, es ist abhängig von Learning Rate ($\alpha$): Schritte zu klein, die stochatische Erregungen werden nicht lassen Lösung zum Minima zu entwickeln, Schritte zu groß weden nicht konvergieren.
$x_{t+1}=x_t-\alpha \nabla f(x_t)$
Weiterentwicklung von SGD Algorythmus. Das Update von Gewichte erfolgt in der Rischtung von aggregierte Gradienten mit gewissenen "Decay" (Der Schritt wird in Richtung "leaky" Mittelwert von Gradienten gemacht). Man kann sich vorstellen, dass Algorythmus "merkt" sich "Geschwindigkeit" von vorherigen Schritten.
Nächste Analogie wäre der Ball, der rollt ins Grube.
Es hilft die Sattelpunkt zu entfliehen und in lokale Minima nicht bleiben. Es its übrig, dass SGD-Momentum überschießt die Lösung und dann kommt zurück, wie wir später sehen können. Außer Learning rate SGD-Momentum enthält Hyperparameter $\rho$, der für "Decay" oder "Reibung" verantwrtlich ist. Oft wird $\rho$ 0.9 oder 0.99 eingesetzt.
$v_{t+1}=\rho v_t+\nabla f(x_t)$
$x_{t+1}=x_t-\alpha v_{t+1}$
Andere Variation von SGD-Momentum Algorythmus, die verwendet Gradient nicht an ursprungliche Postion, sondern an der Stelle, wo Geschwindigkeit zeigt. Besitzt derselbe Vor- und Nachteile wie SGD-Momentum, aber der Überschieß ist kleiner.
$v_{t+1}=\rho v_t - \alpha \nabla f(\tilde{x}_t)$
$\tilde{x}_{t+1}=\tilde{x}_t+v_{t+1}+\rho(v_{t+1}-v_t)$
Folgt der Prinzip, wie SGD-Momentum, aber speichert das Quadrat von Gradient (2. Momentum). Klassische AdaGrad verkleint Zeitschritt in Laufe der Zeit, RMSProp einfüht "Decay", der das vermeidet. \
AdaGrad:
$x_{t+1}=x_t-\alpha \frac{\nabla f(x_t)}{\sqrt{\sum_{i=0}^t \nabla^2 f(x_i)}\, +\, 1 \cdot 10^{-7}}$
RMSProp:
$x_{t+1}=x_t-\alpha \frac{\nabla f(x_t)}{\sqrt{\rho \sum_{i=0}^{t-1} \nabla^2 f(x_i)\: +\: (1-\rho)\nabla^2 f(x_t)}\, +\, 1 \cdot 10^{-7}}$
$1 \cdot 10^{-7}$ dient um Teilen durch 0 zu vermeiden.
Algorythmus, der ehthält sowohl 1. als auch 2. Momentum:
Momentum Updaten:
$v_{t+1}=\beta_1 v_t + (1-\beta_1)\nabla f(x_t)$
$s_{t+1}=\beta_2 s_t + (1-\beta_2)\nabla^2 f(x_t)$
Momentum Unbiasen:
$v_{t+1}^{unbias}=v_{t+1}/(1-\beta_1^t)$
$s_{t+1}^{unbias}=s_{t+1}/(1-\beta_2^t)$
Schritt selbst:
$x_{t+1}=x_t - \alpha v_{t+1}^{unbias}/(\sqrt{s_{t+1}^{unbias}}\, +\, 1 \cdot 10^{-7})$
Die "recommended" (oft gut zum esten Testen) Hyperparameter sind:
$\beta_1=0.9$ (Reibung für 1. Moment)
$\beta_2=0.999$ (Reibung für 2. Moment)
$\alpha=1\cdot 10^{-3}$ (Learning Rate)
Da diese Algorythmus kombiniert Vorteile aller vorhergenannten Methoden, wird es oft effizienter und dadurch sehr populär.
Alle Algorythmen starten aus derselben Punkt. Man kann die charackteristische Eigenschfaten hier leicht erkennen:
Klassische SGD kann nicht lokale Mimima besiegen.
SGD-Momentum und Nesterov Momentum überschießen und zwar Nesterov etwa weniger.
RMSProp folgt andere Neigung aus der Erhebung, weil sein 2. Mometum beeinflüßt.
Und Adam folgt zuesrt RMSProp aber dann Betrag von 1. Mometum "zieht" ihm zu anderen und ... er landet in lokale Mimima mit klassischem SGD. Wir haben aber uns sehr vereinfachte Darstellund in Raume 2 Parameter angeschaut. In Raum mehrere Dimensionen ist es unwahrscheinlich, dass Adam "schlechteste" Ergebnis zeigt.
Um ganz korrekt zu sein, muss auch folgenden berücksichtigt werden: Um die Algorythmen quantitativ zu vergleichen muss man immer Hyperparameter für jeder Methode für konkrete Aufgabemstellung anpassen. Nur dann darf man Aussagen über Algorythmen für konkretes Problem machen.